package com.netclass.meethealth.tools;

import android.text.TextUtils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * 解析服务器返回的数据工具类
 * <p/>
 * Created by luodong on 15/11/22.
 */
public class JsonUtils {

    /**
     * 将给定的 {@code JSON} 字符串转换成指定的类型对象。<strong>此方法通常用来转换普通的 {@code JavaBean}
     * 对象。</strong>
     *
     * @param <T>   要转换的目标类型。
     * @param json  给定的 {@code JSON} 字符串。
     * @param clazz 要转换的目标类。
     * @return 给定的 {@code JSON} 字符串表示的指定的类型对象。
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        if (isEmpty(json)) {
            return null;
        }
        GsonBuilder builder = new GsonBuilder();
        Gson gson = builder.create();
        try {
            return gson.fromJson(json, clazz);
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    /**
     * 检查字符串为空
     *
     * @param inStr
     * @return
     */
    public static boolean isEmpty(String inStr) {
        boolean reTag = false;
        if (inStr == null || "".equals(inStr)) {
            reTag = true;
        }
        return reTag;
    }


    /**
     * 获取结果码
     *
     * @param jsonString
     * @return
     */
    public static int getRet(String jsonString){
        try {
            if(isEmpty(jsonString)){
                throw new JSONException("");
            }
            JSONObject jsonObject = new JSONObject(jsonString);
            int x;
            if((x = jsonObject.getInt("ret"))!=0){
                return x;
            }
            throw new JSONException("");
        } catch (JSONException e) {
            e.printStackTrace();
            return 0;
        }
    }


    /**
     * 获取结果数据
     *
     * @param jsonString
     * @return
     */
    public static String getData(String jsonString){
        try {
            if(isEmpty(jsonString)){
                throw new JSONException("");
            }
            JSONObject jsonObject = new JSONObject(jsonString);
            String x = "";
            if(!TextUtils.isEmpty(x = jsonObject.getString("data"))){
                return x;
            }
            throw new JSONException("");
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }


    /**
     * 转化成数组
     *
     * @param jsonString
     * @return
     */
    public static JSONArray getArray(String jsonString){
        try {
            if(isEmpty(jsonString)){
                throw new JSONException("");
            }
            JSONArray jsonArray = new JSONArray(jsonString);
            return jsonArray;
        } catch (JSONException e) {
            e.printStackTrace();
            return null;
        }
    }

}
